perm filename MOVOLD.AX[W78,JMC] blob
sn#331762 filedate 1978-02-01 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 declare INDVAR t t1 t2 t3 t4 ε tower
C00005 ENDMK
C⊗;
declare INDVAR t t1 t2 t3 t4 ε tower;
declare INDVAR s s0 s1 s2 s3 ε situation;
declare PREDCONST movable(tower,tower,situation),on(tower,tower,situation);
declare PREDCONST moves(tower,tower,situation,situation);
declare PREDCONST reachable(situation,situation);
declare OPCONST move(tower,tower,situation) = situation;
declare OPCONST movefromto(tower,tower,situation);
declare PREDPAR P 1;
axiom move:
∀t1 t2 s.(movable(t1,t2,s) ⊃ on(t1,t2,move(t1,t2,s))
∧ ∀t3 t4.(¬(t3=t1) ⊃ (on(t3,t4,move(t1,t2,s)) ≡ on(t3,t4,s))))
∀t1 t2 s.(¬movable(t1,t2,s) ⊃ move(t1,t2,s) = s)
∀t1 t2 s.(movable(t1,t2,s) ⊃ ∃s1.(reachable(s,s1) ∧
on(t1,t2,s1) ∧ ∀t3 t4.(¬(t3=t1) ⊃ (on(t3,t4,s1) ≡ on(t3,t4,s)))))
;;
axiom reachable:
∀t1 t2 s.(movable(t1,t2,s) ⊃ reachable(s,move(t1,t2,s)))
∀s.reachable(s,s)
∀s1 s2 s3.(reachable(s1,s2) ∧ reachable(s2,s3) ⊃ reachable(s1,s3))
∀s1 s2 t1 t2.(reachable(s1,s2) ∧movable(t1,t2,s2) ⊃
reachable(s1,move(t1,t2,s2)))
∀s0.(P(s0) ∧ ∀s t1 t2.(P(s) ∧ movable(t1,t2,s) ⊃ P(move(t1,t2,s)))
⊃ ∀s.(reachable(s0,s) ⊃ P(s)))
;;
axiom movefromto:
∀t1 t2 s.(∃t4.(on(t4,t1,s) ∧ movable(t4,t2,s)) ⊃
∃t3.moves(t3,t2,s,movefromto(t1,t2,s)))
;;
axiom moves:
∀t1 t2 s1 s2.(moves(t1,t2,s1,s2) ⊃ on(t1,t2,s2) ∧
∀t.(¬(t=t1) ⊃ (on(t,t3,s2) ≡ on(t,t3,s1))))
;;